package com.qdu.dao;

import com.qdu.entity.Worker;
import com.qdu.util.DatabaseUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
 * Dao类-数据访问对象类，专门用于访问数据库中的表 
 * <br>WorkerDao包含方法用于对Worker表执行增删改查
 *
 * @author Anna
 */
public class WorkerDao {

    /**
     * 根据电影编号查询该电影工作人员的编号、姓名、图片
     *
     * @param movieId 电影编号
     * @return 一个工作人员列表，包含该电影所有工作人员信息，包括导演和演员
     */
    public List<Worker> getWorkersByMovieId(String movieId) {

        Connection con = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        List<Worker> list = new ArrayList<>();

        try {
            con = DatabaseUtil.getConnection();
            ps = con.prepareStatement("select a.WorkerId,a.WName,a.WImage from Worker a, MovieWorker b"
                    + " where a.WorkerId=b.WorkerId and b.MovieId=?");
            ps.setString(1, movieId);
            rs = ps.executeQuery();
            while (rs.next()) {
                list.add(new Worker(rs.getString(1), rs.getString(2), rs.getString(3)));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            DatabaseUtil.close(rs, ps, con);
        }
        return list;
    }

    /**
     * 根据工作人员编号查询单个工作人员
     *
     * @param workerId 字符串表示的工作人员编号
     * @return 一个Worker对象，包含该员工的所有信息
     */
    public Worker getOneWorkerById(String workerId) {

        Connection con = null;
        PreparedStatement ps = null;
        ResultSet rs = null;

        try {
            con = DatabaseUtil.getConnection();
            ps = con.prepareStatement("select * from Worker where WorkerId=?");
            ps.setString(1, workerId);
            rs = ps.executeQuery();

            if (rs.next()) {
                return new Worker(
                        rs.getString(1), 
                        rs.getString(2), 
                        rs.getString(3), 
                        rs.getString(4), 
                        rs.getString(5), 
                        rs.getString(6), 
                        rs.getString(7));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            DatabaseUtil.close(rs, ps, con);
        }
        return null;
    }
}
